/**
 * 主题配置
 */
import { ThemeMode } from '@/common/constant'

/**
 * 主题颜色配置
 */
export const themeColors = {
    light: {
        /** 主色调 */
        primary: '#007AFF',
        /** 成功色 */
        success: '#4CD964',
        /** 警告色 */
        warning: '#FF9500',
        /** 错误色 */
        error: '#FF3B30',
        /** 信息色 */
        info: '#34AADC',
        /** 背景色 */
        background: '#F2F2F7',
        /** 卡片背景色 */
        cardBackground: '#FFFFFF',
        /** 文本主色 */
        textPrimary: '#000000',
        /** 文本次要色 */
        textSecondary: '#8E8E93',
        /** 边框色 */
        border: '#CECED2',
        /** 分割线颜色 */
        divider: '#E5E5EA'
    },
    dark: {
        /** 主色调 */
        primary: '#0A84FF',
        /** 成功色 */
        success: '#32D74B',
        /** 警告色 */
        warning: '#FF9F0A',
        /** 错误色 */
        error: '#FF453A',
        /** 信息色 */
        info: '#5AC8FA',
        /** 背景色 */
        background: '#1C1C1E',
        /** 卡片背景色 */
        cardBackground: '#2C2C2E',
        /** 文本主色 */
        textPrimary: '#FFFFFF',
        /** 文本次要色 */
        textSecondary: '#8E8E93',
        /** 边框色 */
        border: '#38383A',
        /** 分割线颜色 */
        divider: '#38383A'
    }
}

/**
 * 字体大小配置
 */
export const fontSizes = {
    /** 特大号标题 */
    h1: '36rpx',
    /** 大号标题 */
    h2: '32rpx',
    /** 中号标题 */
    h3: '28rpx',
    /** 小号标题 */
    h4: '24rpx',
    /** 正文 */
    body: '28rpx',
    /** 小号文本 */
    small: '24rpx',
    /** 超小号文本 */
    mini: '20rpx'
}

/**
 * 间距配置
 */
export const spacing = {
    /** 超小间距 */
    xs: '8rpx',
    /** 小间距 */
    sm: '16rpx',
    /** 中等间距 */
    md: '24rpx',
    /** 大间距 */
    lg: '32rpx',
    /** 超大间距 */
    xl: '40rpx'
}

/**
 * 圆角配置
 */
export const borderRadius = {
    /** 小圆角 */
    sm: '4rpx',
    /** 中等圆角 */
    md: '8rpx',
    /** 大圆角 */
    lg: '16rpx',
    /** 超大圆角 */
    xl: '24rpx',
    /** 圆形 */
    circle: '50%'
}

/**
 * 获取当前主题的颜色配置
 * @param mode 主题模式
 * @returns 颜色配置对象
 */
export const getThemeColors = (mode: ThemeMode) => {
    // 如果是跟随系统，则根据系统主题返回对应的颜色配置
    if (mode === ThemeMode.SYSTEM) {
        // 获取系统主题
        const systemInfo = uni.getSystemInfoSync()
        const isDark = systemInfo.theme === 'dark'
        return isDark ? themeColors.dark : themeColors.light
    }

    // 否则直接返回对应的颜色配置
    return mode === ThemeMode.DARK ? themeColors.dark : themeColors.light
}
